import { getIdxInParent } from './get-idx-in-parent'

/**
 * 获取目标元素在父元素的子元素列表中的后一个元素
 *
 * @param {Element} el 目标元素
 * @returns {Element | null} 目标元素在父元素的子元素列表中的后一个元素，如果不存在，则返回 null
 */
export const getNextEl = (el: Element): Element | null => {
  const parentEl = el.parentElement
  if (!parentEl) return null
  // 由于在此处父元素必定存在，所以一定能获取到目标元素在父元素的子元素列表中的索引
  const idx = getIdxInParent(el)
  // 如果目标元素为父元素的最后一个子元素
  if (idx === parentEl.children.length - 1) return null
  return parentEl.children[idx + 1]
}

export type GetNextElType = typeof getNextEl
